﻿
$(document).ready(function(){
	initEvent();
	initUploadGrid();
});
function initEvent(){
	//파일명 맵핑
    $("#uploadFile").change(function() {
       	var fileName = $("#uploadFile").val();
       	console.log(fileName);
       	var splitFileName = fileName.split("\\");
       	$("#fakeUploadPath").val(splitFileName[splitFileName.length-1]);
       	$("#excelUploadForm").attr("action", contextPath+"/upload/fileInfo.file").submit();
    });

	//동적 파일정보 추출 및 그리드 맵핑
    $("#excelUploadForm").ajaxForm( {
       	iframe: "true",
       	type: "POST",
       	dataType: "text",
       	cache: false,
       	modal: true,
       	async : false,
       	success: function (response)
       	{
       		if(response != null || response != ''){
       			var data = JSON.parse(response);
           		var size = data.file[0].sizeKB;
           		var fileName = data.file[0].fileName;
           		var uploadData = [];
           		var startIdx = 2;//검색된 첫번째줄은 해더로 취급

           		$("#fileSize").html(size);
           		if(fileName && fileName.length > 4 && fileName.substring(fileName.length - 4, fileName.length) == ".xls"){
           			for(var i = startIdx ; i < data["excel"][0].length ; i++){
               			uploadData[i - startIdx] = data["excel"][0][i];
               		}
           			$("#strTotalDataCount").html(data["excel"][0].length - startIdx);
           			$("#strTrueDataCount").html(0);
           			$("#strFalseDataCount").html(0);
           			$("#strUpdateDataCount").html(0);
           			$("#strEmptyDataCount").html(0);
                    $("#uploadGrid").jqGrid('clearGridData').jqGrid('setGridParam', { data: uploadData, datatype: 'local' }).trigger('reloadGrid');

           		}
           		else{
           			$("#uploadGrid").jqGrid('clearGridData');
           			alert("잘못된 파일입니다.\n업로드용 엑셀파일은 *.xls 파일만 지원합니다.");
           			location.reload();
           		}
       		}
       	}
    } );

	//데이터 전송 및 전송결과 그리드 맵핑
    $("#btnTransferUploadData").click(function(){
    	if($("#uploadFile").val() != ""){
	   		$.ajax({
	   			type: "POST"
	   			, url: contextPath+"/upload/insertEstimate.json"
	   			, data: {
	   				json: getJsonListStr('uploadGrid')
	   			}
	   		}).done(function( msg ) {
	   			var cntTrue = 0;
	   			var cntFalse = 0;
	   			var cntEmpty = 0;
	   			var cntUpdate = 0;
	
	   			for(var i = 0 ; i < msg.excel.length ; i++){
	   				if(msg.excel[i].result_building == "T"){
	   					cntTrue++;
	   				}
	   				else if(msg.excel[i].result_building == "F"){
	   					cntFalse++;
	   				}
	   				else if(msg.excel[i].result_building == "E"){
	   					cntEmpty++;
	   				}
	   				else if(msg.excel[i].result_building == "U"){
	   					cntUpdate++;
	   				}
	   			}
	   			$("#strTotalDataCount").html(msg.excel.length);
	
	   			$("#strTrueDataCount").html(cntTrue);
	   			$("#strFalseDataCount").html(cntFalse);
	   			$("#strUpdateDataCount").html(cntUpdate);
	   			$("#strEmptyDataCount").html(cntEmpty);
	            $("#uploadGrid").jqGrid('clearGridData').jqGrid('setGridParam', { data: msg["excel"], datatype: 'local' }).trigger('reloadGrid');
	   		});
    	}
   		return false;
    });
}

//그리드 셋팅
function initUploadGrid(){
    $("#uploadGrid").jqGrid({
        datatype: 'json', //데이터형태
        /*
        	result_building, result_incharge, result_mensure1, result_mensure2, result_mensure3
        	miss, excel_0, excel_1, excel_2, excel_3, excel_4, excel_5
        	excel_6, excel_7, excel_8, excel_9, excel_10, excel_11, excel_12
        	excel_13, excel_14, excel_15, excel_16, excel_17, excel_18, excel_19, excel_20
        	excel_21, excel_22, excel_23, excel_24, excel_25, excel_26
        	excel_27, excel_28, excel_29, excel_30, excel_31, excel_32
        	excel_33, excel_34, excel_35, excel_36, excel_37, excel_38
        */
        colNames: ['시설 전송 결과', '담당자 전송 결과', '측정내역1 전송 결과', '측정내역2 전송 결과', '측정내역3 전송 결과'
                   , 'miss', '업체구분', '업체명(시설명)', '구주소', '신주소', '우편번호', '업체비고'
                   , '사업자번호', '사업자명', '대표자', '사업자주소', '업태', '종목', '메일'
                   , '담당자', '부서', '직위', '전화', '핸드폰', '팩스', '메일', '담당자 비고'
                   , '견적일', '측정일', '대상(항목)', '금액', '수납', '비고'
                   , '견적일', '측정일', '대상(항목)', '금액', '수납', '비고'
                   , '견적일', '측정일', '대상(항목)', '금액', '수납', '비고'
                   ], //헤더
        colModel: [ //컬럼속성
        {
        	name: 'result_building',
            index: 'result_building',
            formatter: transferFormatter,
            sortable: false
        }, {
            name: 'result_incharge',
            index: 'result_incharge',
            formatter: transferFormatter,
            sortable: false
        }, {
            name: 'result_measure1',
            index: 'result_measure1',
            formatter: transferFormatter,
            sortable: false
        }, {
            name: 'result_measure2',
            index: 'result_measure2',
            formatter: transferFormatter,
            sortable: false
        }, {
            name: 'result_measure3',
            index: 'result_measure3',
            formatter: transferFormatter,
            sortable: false
        }, {
            name: 'miss',
            index: 'miss',
            hidden: true,
            sortable: false
        }, /*시설정보*/{
            name: 'excel_0',
            index: 'excel_0',
            sortable: false,
            align: 'center'
        }, {
            name: 'excel_1',
            index: 'excel_1',
            sortable: false
        }, {
            name: 'excel_2',
            index: 'excel_2',
            sortable: false
        }, {
            name: 'excel_3',
            index: 'excel_3',
            sortable: false
        }, {
            name: 'excel_4',
            index: 'excel_4',
            sortable: false
        }, {
            name: 'excel_5',
            index: 'excel_5',
            sortable: false
        }, {

            name: 'excel_6',
            index: 'excel_6',
            sortable: false
        }, {
            name: 'excel_7',
            index: 'excel_7',
            sortable: false
        }, {
            name: 'excel_8',
            index: 'excel_8',
            sortable: false
        }, {
            name: 'excel_9',
            index: 'excel_9',
            sortable: false
        }, {
            name: 'excel_10',
            index: 'excel_10',
            sortable: false
        }, {
            name: 'excel_11',
            index: 'excel_11',
            sortable: false
        }, {
            name: 'excel_12',
            index: 'excel_12',
            sortable: false
        },/*담당자*/ {
            name: 'excel_13',
            index: 'excel_13',
            sortable: false
        }, {
            name: 'excel_14',
            index: 'excel_14',
            sortable: false
        }, {
            name: 'excel_15',
            index: 'excel_15',
            sortable: false
        }, {
            name: 'excel_16',
            index: 'excel_16',
            sortable: false
        }, {
            name: 'excel_17',
            index: 'excel_17',
            sortable: false
        }, {
            name: 'excel_18',
            index: 'excel_18',
            sortable: false
        }, {
            name: 'excel_19',
            index: 'excel_19',
            sortable: false
        }, {
            name: 'excel_20',
            index: 'excel_20',
            sortable: false
        },/*측정내역1*/ {
            name: 'excel_21',
            index: 'excel_21',
            sortable: false
        }, {
            name: 'excel_22',
            index: 'excel_22',
            sortable: false
        }, {
            name: 'excel_23',
            index: 'excel_23',
            sortable: false
        }, {
            name: 'excel_24',
            index: 'excel_24',
            sortable: false
        }, {
            name: 'excel_25',
            index: 'excel_25',
            sortable: false
        }, {
            name: 'excel_26',
            index: 'excel_26',
            sortable: false
        },/*측정내역2*/ {
            name: 'excel_27',
            index: 'excel_27',
            sortable: false
        }, {
            name: 'excel_28',
            index: 'excel_28',
            sortable: false
        }, {
            name: 'excel_29',
            index: 'excel_29',
            sortable: false
        }, {
            name: 'excel_30',
            index: 'excel_30',
            sortable: false
        }, {
            name: 'excel_31',
            index: 'excel_31',
            sortable: false
        }, {
            name: 'excel_32',
            index: 'excel_32',
            sortable: false
        },/*측정내역3*/ {
            name: 'excel_33',
            index: 'excel_33',
            sortable: false
        }, {
            name: 'excel_34',
            index: 'excel_34',
            sortable: false
        }, {
            name: 'excel_35',
            index: 'excel_35',
            sortable: false
        }, {
            name: 'excel_36',
            index: 'excel_36',
            sortable: false
        }, {
            name: 'excel_37',
            index: 'excel_37',
            sortable: false
        }, {
            name: 'excel_38',
            index: 'excel_38',
            sortable: false
        }],
        multiselect: false, //multi select 를 위한 check box 사용여부
        jsonReader: {
            root: "root",
            page: "page",
            total: "total",
            records: "records",
            repeatitems: false
        },
        footerrow: false,
        userDataOnFooter: false,
        cellEdit: false, //그리드의 edit 모드 설정
        shrinkToFit: false, //width 가 고정되어있는 경우 가로스크롤 사용여부
        cellsubmit: 'clientArray', //jqGrid의 auto submit 기능을 제거
        rownumbers: true,
        mtype: 'POST',
        postData: "",
        autowidth: true,
        loadonce: false,
        rowNum: 9999,
        height : 500,
        beforeRequest: function() {

        },
        loadComplete: function() {
        },
        afterInsertRow : function(rowid, aData) {
        },
        afterEditCell: function(rowid, name, value, iRow, iCol) {
        },
        afterSaveCell: function(rowid, name, val, iRow, iCol){
        }
    });
}
//성공/실패/중복 여부 체크 Formatter
function transferFormatter(cellvalue, options, rowObjet){
	if(cellvalue == "T"){
		return "성공";
	}
	else if(cellvalue == "F"){
        return "실패";
    }
	else if(cellvalue == "D"){
        return "중복";
    }
	else if(cellvalue == "E"){
        return "미존재";
    }
	else if(cellvalue == "U"){
        return "갱신";
    }
	else{
		return "대기";
	}
}
function getJsonListStr(gridId, rowId){
    var jsonText = '';
    jsonText += '{';
    jsonText += 'root:';
    jsonText += '[';
    if (!rowId) {
        // case 1: row id 가 비어있는경우 - (1) check box로 선택된 행을 리턴 (2)check 된행이 없다면
        // 전체 행을 리턴
        var selectedIds = $("#" + gridId).jqGrid('getGridParam', 'selarrrow');
        if (selectedIds.length > 0) {
               for (var i = 0; i < selectedIds.length; i++) {
                   jsonText += getJsonRowStr(gridId, selectedIds[i]);
                   if(i < selectedIds.length - 1){
                       jsonText += ',';
                   }
               }
        }
        else {
        	selectedIds = $("#" + gridId).getDataIDs();
            for(var i = 0 ; i < selectedIds.length ; i++) {
            	jsonText += getJsonRowStr(gridId, selectedIds[i]);
            	if(i < selectedIds.length - 1){
                    jsonText += ',';
            	}
            }
        }
    }
    else {
        // case 2: row id 가 있는경우 - (1) 파라메터 row id 에 해당하는 행을 리턴
        jsonText += getJsonRowStr(gridId, rowId);
    }

    jsonText += ']';
    jsonText += '}';
    return jsonText;
}

/**
 * gridId에 해당하는 테이블에서 rowId 에 해당하는 row를 json text 형태로 반환 한다.
 */
function getJsonRowStr(gridId, rowId){
    var rowData = getGridRowData(gridId, rowId);
    var jsonText = '';

    jsonText += '{';

    for (var item in rowData) {
        jsonText += "'" + item + "'" + ':' + "'" + rowData[item].replace(/'/g,'"') + "'";
        jsonText += ',';
    }

    jsonText = jsonText.substring(0, jsonText.length - 1);

    jsonText += '}';
    return jsonText;
}

/**
 * Grid getRowData 할 때, <input type="text".../> 태그 딸려오는 문제 보완
 * @param rowid
 */
function getGridRowData(gridId, rowId){
    var rowData = $("#" + gridId).getRowData(rowId);
//     $("#" + rowId).find("input:text").each(function(e){
//         rowData[$(this).attr("id").replace(rowId + "_", "")] = $(this).val();
//     });
    return rowData;
}